#!/data/data/com.termux/files/usr/bin/bash

echo "==================================="
echo "      Termux Linux 一键安装脚本"
echo "==================================="

# 错误处理函数
check_error() {
    if [ $? -ne 0 ]; then
        echo "错误: $1 失败"
        exit 1
    else
        echo "✓ $1 成功"
    fi
}

# 检查是否已经安装了必要组件
check_installation() {
    if ! command -v proot-distro &> /dev/null; then
        echo "未检测到 proot-distro，开始安装..."
        pkg install proot-distro -y
        check_error "安装 proot-distro"
    else
        echo "✓ proot-distro 已安装"
    fi
}

# 创建必要的配置文件
setup_config() {
    echo "创建配置文件..."
    cat > /root/qz--chat/.env << EOF
ZHIPU_API_KEY=你的智谱API密钥
EOF
    chmod 600 /root/qz--chat/.env
    
    if [ -f /root/qz--chat/.env ]; then
        echo "✓ .env 文件创建成功"
    else
        echo "错误: .env 文件创建失败"
        exit 1
    fi
}

echo -e "\n[1/6] 更新系统..."
pkg update -y && pkg upgrade -y
check_error "系统更新"

echo -e "\n[2/6] 检查并安装依赖..."
check_installation

echo -e "\n[3/6] 安装Debian系统..."
# 检查 Debian 是否已安装
if [ -d "${PREFIX}/var/lib/proot-distro/installed-rootfs/debian" ]; then
    echo "✓ Debian 已安装"
else
    echo "开始安装 Debian..."
    proot-distro install debian
    if [ $? -ne 0 ]; then
        echo "错误: Debian 安装失败"
        exit 1
    else
        echo "✓ Debian 安装成功"
    fi
fi

echo -e "\n[4/6] 配置Debian环境..."
proot-distro login debian -- bash -c "
    echo '正在更新系统...'
    apt update && apt upgrade -y
    check_error '系统更新'
    
    echo '安装必要的包...'
    apt install -y git python3 python3-pip build-essential
    
    # 验证安装
    for cmd in git python3 pip3; do
        if command -v \$cmd &> /dev/null; then
            echo \"✓ \$cmd 已安装\"
        else
            echo \"错误: \$cmd 安装失败\"
            exit 1
        fi
    done
"

echo -e "\n[5/6] 安装qz--chat..."
proot-distro login debian -- bash -c '
    # 在子shell中重新定义函数
    check_error() {
        if [ $? -ne 0 ]; then
            echo "错误: $1 失败"
            exit 1
        else
            echo "✓ $1 成功"
        fi
    }

    setup_config() {
        echo "创建配置文件..."
        cat > /root/qz--chat/.env << EOF
ZHIPU_API_KEY=你的智谱API密钥
EOF
        chmod 600 /root/qz--chat/.env
        
        if [ -f /root/qz--chat/.env ]; then
            echo "✓ .env 文件创建成功"
        else
            echo "错误: .env 文件创建失败"
            exit 1
        fi
    }

    cd /root
    if [ -d "qz--chat" ]; then
        echo "更新已存在的项目..."
        cd qz--chat
        git pull
        check_error "Git 更新"
    else
        echo "克隆新项目..."
        git clone https://gitee.com/zhu28/qz--chat.git
        check_error "Git 克隆"
        cd qz--chat
    fi
    
    echo "安装 python3-venv..."
    apt install -y python3-venv python3-full
    check_error "安装 python3-venv"
    
    echo "创建虚拟环境..."
    python3 -m venv venv
    check_error "创建虚拟环境"
    
    echo "激活虚拟环境并安装依赖..."
    . venv/bin/activate
    pip3 install --upgrade pip
    pip3 install -r requirements.txt
    check_error "Python 依赖安装"
    
    # 验证关键包是否安装成功
    pip3 list | grep -q "zhipuai" && echo "✓ zhipuai 已安装" || { echo "错误: zhipuai 安装失败"; exit 1; }
    pip3 list | grep -q "itchat-uos" && echo "✓ itchat-uos 已安装" || { echo "错误: itchat-uos 安装失败"; exit 1; }
    
    # 创建配置文件
    setup_config
'

echo -e "\n[6/6] 配置并启动..."
echo "请输入你的智谱API密钥(ZHIPU_API_KEY):"
read -r api_key

# 更新配置文件
proot-distro login --bind /dev/null:/proc/sys/kernel/cap_last_cap debian -- bash -c "
    echo 'ZHIPU_API_KEY=${api_key}' > /root/qz--chat/.env
    chmod 600 /root/qz--chat/.env
"

# 最终检查
echo -e "\n正在进行最终检查..."
proot-distro login --bind /dev/null:/proc/sys/kernel/cap_last_cap debian -- bash -c '
    if [ -d "/root/qz--chat" ]; then
        echo "✓ 项目目录存在"
        if [ -f "/root/qz--chat/.env" ]; then
            echo "✓ 配置文件存在"
            if grep -q "ZHIPU_API_KEY=" "/root/qz--chat/.env"; then
                echo "✓ API密钥已配置"
            else
                echo "错误: API密钥未配置"
                exit 1
            fi
        else
            echo "错误: 配置文件不存在"
            exit 1
        fi
        if [ -f "/root/qz--chat/wechat_bot.py" ]; then
            echo "✓ 主程序文件存在"
        else
            echo "错误: 主程序文件不存在"
            exit 1
        fi
        if [ -d "/root/qz--chat/venv" ]; then
            echo "✓ Python虚拟环境存在"
        else
            echo "错误: Python虚拟环境不存在"
            exit 1
        fi
    else
        echo "错误: 项目目录不存在"
        exit 1
    fi
'

# 如果检查通过，启动程序
if [ $? -eq 0 ]; then
    echo -e "\n所有检查通过，正在启动程序..."
    
    # 设置必要的环境变量
    export PROOT_NO_SECCOMP=1
    export PROOT_L2S_32=0
    export TMPDIR=/data/data/com.termux/files/usr/tmp

    # 确保目录存在
    mkdir -p $TMPDIR

    # 创建启动脚本
    cat > start.sh << 'EOF'
#!/data/data/com.termux/files/usr/bin/bash

echo "==================================="
echo "         QZ--Chat 启动脚本"
echo "==================================="

# 设置必要的环境变量
export PROOT_NO_SECCOMP=1
export PROOT_L2S_32=0
export TMPDIR=/data/data/com.termux/files/usr/tmp

# 确保目录存在
mkdir -p $TMPDIR

# 启动程序
proot-distro login \
    --bind /dev/null:/proc/sys/kernel/cap_last_cap \
    --bind $TMPDIR:/tmp \
    --bind $PREFIX:/host-rootfs \
    --isolated \
    --fix-low-ports \
    debian -- /bin/bash -c '
        # 设置工作目录
        export HOME=/root
        export TMPDIR=/tmp
        export PWD=/root/qz--chat
        
        # 检查必要文件
        if [ ! -d "/root/qz--chat" ]; then
            echo "错误: 项目目录不存在"
            exit 1
        fi
        
        if [ ! -f "/root/qz--chat/venv/bin/activate" ]; then
            echo "错误: 虚拟环境不存在"
            exit 1
        fi
        
        if [ ! -f "/root/qz--chat/.env" ]; then
            echo "错误: 配置文件不存在"
            exit 1
        fi
        
        # 启动程序
        echo "正在启动 QZ--Chat..."
        cd /
        cd /root/qz--chat
        . venv/bin/activate
        exec python3 /root/qz--chat/wechat_bot.py
    '
EOF

    chmod +x start.sh
    
    # 启动程序
    proot-distro login \
        --bind /dev/null:/proc/sys/kernel/cap_last_cap \
        --bind $TMPDIR:/tmp \
        --bind $PREFIX:/host-rootfs \
        --isolated \
        --fix-low-ports \
        debian -- /bin/bash -c '
            export HOME=/root
            export TMPDIR=/tmp
            export PWD=/root/qz--chat
            
            cd /
            cd /root/qz--chat
            . venv/bin/activate
            exec python3 /root/qz--chat/wechat_bot.py
        '
else
    echo -e "\n检查未通过，请检查错误信息并修复后重试。"
    echo "你可以使用以下命令手动启动程序："
    echo "./start.sh"
    exit 1
fi 